Recv-Q:表示收到的数据中还有多少没有被进程取走(通过recv)
Send-Q:表示需要发送的数据还有多少没有被发出
所以,一般来说这两个值都是0,如果不为0且持续增长,那就表明程序出现了问题。
比如Recv-Q的数字持续增长,表示没有进程去取这些收到的数据。比如使用select+recv来收数据的时候,由于select有1024这个限制,所以如果socket的FD大于1024的时候,就会导致这个socket FD上的数据不会被select检测到从而导致recv不会被调用。
说
所以,通过netstat的这两个值就可以简单判断程序收不到包到底是包没到还是包没有被进程recv。
Recv-Q Send-Q分别表示网络接收队列,发送队列。Q是Queue的缩写。
这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。可接受短暂的非0情况。如文中的示例,短暂的Send-Q队列发送pakets非0是正常状态。
如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。
如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。
Recv-Q:表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()
Send-Q:对方没有收到的数据或者说没有Ack的,还是本地缓冲区.
通过netstat的这两个值就可以简单判断程序收不到包到底是包没到还是包没有被进程recv。
SYN(synchronous)是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
TCP连接的第一个包,非常小的一种数据包。SYN 攻击包括大量此类的包,由于这些包看上去来自实际不存在的站点,因此无法有效进行处理。每个机器的欺骗包都要花几秒钟进行尝试方可放弃提供正常响应。